package es.ucm.fdi.pe.practica2.genetico2.mutacion;

import java.util.ArrayList;

import es.ucm.fdi.pe.practica2.genetico2.Alumno;
import es.ucm.fdi.pe.practica2.genetico2.CromosomaAlumnos;

public class MutacionInsercion {

	public void mutar(CromosomaAlumnos c){
		int posAlumnoAzar = (int) (Math.random()*c.getN());
		int posicion=  (int) (Math.random()*(c.getN()-1));
		
		//System.out.println("Mutar al alumno "+posAlumnoAzar+" en la pos "+posicion);
		
		int i = -1;
		boolean encontrado = false;
		Alumno a = c.getGruposAlumnos().get(posAlumnoAzar);
		while(!encontrado){
			i++;
			if(c.getGruposAlumnos().get(i).equals(a))
				encontrado=true;
		}
		if(i>posicion)
			for(int j=i; j>posicion; j--){
				c.getGruposAlumnos().set(j,c.getGruposAlumnos().get(j-1));
			}
		else
			for(int j=i;j<posicion;j++){
				c.getGruposAlumnos().set(j,c.getGruposAlumnos().get(j+1));
			}
		c.getGruposAlumnos().set(posicion,a);
	}

	public static void main(String args[]) throws Exception{
		Alumno a1 = new Alumno(101, 8.75); //Alumno normal 1
		a1.addExcluido(102);
		a1.addExcluido(103);
		a1.addExcluido(104);
//		System.out.println(a1.toString());
		
		Alumno a2 = new Alumno(201, 5.75); //Alumno normal 2
		a2.addExcluido(202);
		a2.addExcluido(203);
		a2.addExcluido(204);
//		System.out.println(a2.toString());
		
		Alumno a3 = new Alumno(301, 9.75); //Alumno normal 3
		a3.addExcluido(302);
		a3.addExcluido(303);
		a3.addExcluido(304);
//		System.out.println(a3.toString());
		
		Alumno a4 = new Alumno(401, 6.75); //Alumno normal 4
		a4.addExcluido(402);
		a4.addExcluido(403);
		a4.addExcluido(404);
//		System.out.println(a4.toString());
		
		Alumno a5 = new Alumno(501, 2.75); //Alumno normal 5
		a5.addExcluido(502);
		a5.addExcluido(503);
		a5.addExcluido(504);
//		System.out.println(a5.toString());
		
	//Alumno a6 = new Alumno(601, 3.75); //Alumno normal 6
//		a6.addExcluido(602);
//		a6.addExcluido(603);
//		a6.addExcluido(604);
//		System.out.println(a6.toString());
		
		ArrayList<Alumno> lista= new ArrayList<Alumno>();
		lista.add(a1);
		lista.add(a2);
		lista.add(a3);
		lista.add(a4);
		lista.add(a5);
//		lista.add(a6);
		for (int i=0;i<4;i++){
			System.out.println("Vuelta "+(i+1)+"---------");
			CromosomaAlumnos c1= new CromosomaAlumnos(3, lista);
			System.out.println(c1.toString());
			MutacionInsercion m = new MutacionInsercion();
			m.mutar(c1);
			System.out.println(c1.toString());
			System.out.println("----------");
		}
	}	
	
}

